package AOP;

import org.aopalliance.aop.Advice;
import org.springframework.aop.Advisor;
import org.springframework.aop.support.JdkRegexpMethodPointcut;

/**
 * 切入点规则父类
 */
public abstract class AOPPoint {
    //切入点
    public JdkRegexpMethodPointcut point(String regularExpression) {
        JdkRegexpMethodPointcut cut = new JdkRegexpMethodPointcut();
        //cut.setPattern("指定明确方法的位置");
        cut.setPattern(regularExpression);//或者指定匹配关系的正则表达式
        return cut;
    }

    //通知
    //如果在方法提之前需要加入一些操作
    public abstract Advice before();

    //如果在方法提之后执行
    public abstract Advice after();

    //如果方法体被包含
    public abstract Advice around();

    /**
     *
     * @param regularExpression 可以时匹配的正则表达式,也可以是明确的方法的路径
     * @param location
     * @return
     */
    public abstract Advisor rule(String regularExpression,String location);
}
